package com.dl.mall.service.admin;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dl.mall.entity.Page;
import com.dl.mall.entity.admin.Admin;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * 管理员服务层
 * @author DL
 * @create 2022-3-29 15:40:49
 */
@Service
public interface AdminService {

    boolean addAdmin(JSONObject jsonObject);

    /**
     * 根据 用户id 查询用户角色和权限
     * 每次路由触发
     * @param userId 用户id
     * @return 用户信息
     */
    Map<String, String> getRoleById(String userId);

    /**
     * 管理员登录
     * @param username 用户名
     * @return 管理员信息
     */
    Admin login(String username);

    /**
     * 查重
     * @param username 用户名
     * @return 管理员信息
     */
    Admin getAdminByUsername(String username);

    /**/

    /**
     * 根据 条件 查询用户列表
     * @param userId id
     * @return 用户
     */
    Admin getAdminInfoById(String userId);

    /**
     * 更新 管理员 账号状态
     * @param userId 账号id
     * @param state 状态
     * @return 结果
     */
    boolean modifyAdminState(String userId, Integer state);

    /**
     * 更新用户角色
     * @param userId 账号id
     * @param roleIdList 角色id集合
     * @return
     */
    boolean modifyAdminRole(String userId, JSONArray roleIdList);

    /**
     * 重置密码
     * @return 结果
     */
    String resetPassword(String username);

    /**
     * 修改密码
     * @return 结果
     */
    boolean modifyPassword(String userId, String newPassword);

    /**
     * 更新用户信息
     * @return 结果
     */
    boolean modifyAdminInfo(JSONObject jsonObject);


    /**
     * 根据 条件 查询管理员列表
     * @param condition 条件
     * @return 用户分页
     */
    Page<Admin> getAdminByCondition(JSONObject condition);

}
